package jin.competition.jan09;

import java.util.Scanner;

public class Co_3 {

	private static int getFibo(int i) {
		if (i == 0)
			return 0;
		else if (i == 1)
			return 1;
		else
			return getFibo(i - 1) + getFibo(i - 2);
	}

	// private int sum=0,num=1;
	// public static int calSum(int maxI) {
	// int sum = 0, num = 1;
	// if (num <= maxI) {
	//
	// // getFibo(maxI);
	// sum += getFibo(num-1);
	// num++;
	// calSum(maxI);
	// }
	// return sum;
	// }
	private long sum = 0;
	private int num = 0;

	public long calSum(int maxnum) { // maxnum为数列最大的项的项数
		if (num < maxnum) {

			// getFibo(maxnum-num);
			sum += getFibo(num);
			num++;
			calSum(maxnum);
		}
		return sum;
	}

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		System.out.println("输入数列最高项项数： ");
		Scanner s = new Scanner(System.in);
		int nu = s.nextInt();
		System.out.println("数列的前" + nu + "项为：");
		for (int j = 0; j < nu; j++) {
			System.out.print(getFibo(j) + "\t");
			if ((j + 1) % 5 == 0)
				System.out.println();

		}
		System.out.println();
		// System.out.println("这 个序列的和: " + getFiboSum(3));
		Co_3 fib = new Co_3();
		System.out.println("这 个序列的前" + nu + "项和:" + fib.calSum(nu));
		s.close();

	}
}

/*
 * 3.
 * 
 * 有一个序列，首两项为 0，1，以后各项值为前两项值之和。写一个方法来实现求这 个序列的和
 */

/*
 * 0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765 10946
 * 17711 28657 46368 75025
 */